Message Session Relay Protocol (MSRP) is a protocol for transmitting Multipurpose Internet Mail Extensions (MIME) content that is arbitrary and binary (e.g., a series of related instant messages) in the context of a session. The MSRP protocol is defined by a standard known as Request for Comments (RFC) (e.g., RFC 4975 and RFC 4976).
MSRP sessions are typically arranged using Session Initiation Protocol (SIP) or Session Description Protocol (SDP). Multiple MSRP messages can be transmitted during one MSRP session. The data transfer during a MSRP session can be established over reliable connection oriented transports (e.g., TCP or Transport Layer Security (TLS)). Multiple MSRP sessions can be established over a single TCP connection with the use of MSRP relay servers.
The MSRP protocol assumes a reliable transport. When a transmission of a MSRP message fails, there is not a retransmission of the MSRP message on a MSRP layer. TCP congestion handling only acts on an aggregate of all the MSRP sessions using the TCP session. Therefore, a single MSRP session that is congested can cause MSRP messages to drop, but not trigger a TCP session's congestion handling. The MSRP protocol does not provide for transmitting a message to a message sender to adjust the rate at which the message sender is transmitting messages over a MSRP session (e.g., the traffic rate per session).
MSRP messages for a congested MSRP session are either discarded or buffered on a MSRP relay server. Uncongested MSRP sessions sharing the same TCP connection as the congested message can also be discarded or buffered. For example, MSRP client A has a first MSRP session with MSRP client B and MSRP client C has a second MSRP session with MSRP client D. The first MSRP session and the second MSRP session are transported on the same TCP connection through a first MSRP relay and a second MSRP relay. If a connection between the second MSRP relay and MSRP client D becomes congested, the second MSRP relay buffers all MSRP messages it is suppose to transmit to MSRP client D. Once the second MSRP relay buffers becomes full, the second MSRP relay discards additional MSRP messages it receives and stops reading incoming MSRP messages from the first MSRP relay. Thus, the first MSRP session between MSRP client A and MSRP client B also fails although only the second MSRP session is congested.